// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: 'yxzclassroomquery-2e2n5pc39df1a0'
})
const db = cloud.database();
// 云函数端最多只能取100条数据
const MAX_LIMIT = 100;

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext();
  // event.name event.id分别为考生输入的姓名和报名号 注意都为字符串

  // 先计算集合记录总数
  const countRes = await db.collection('students').count();
  const total = countRes.total;
  // 计算需要分几次取
  const batchTimes = Math.ceil(total / 100);
  // 承载所有读操作的promise数组
  const tasks = [];
  // 数据库中报名号为number，而输入的string，需要转换
  const id = parseInt(event.id);
  const name = event.name;
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection('students')
      .where({
        bmh: id,
        xm: name,
      })
      .skip(i * MAX_LIMIT).limit(MAX_LIMIT)
      .get();
    tasks.push(promise);
  }

  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg
    }
  })
}